package com.deliccio.dao.impl;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.PersistenceContext;
import javax.persistence.PersistenceUnit;
import javax.persistence.Query;

import org.springframework.stereotype.Repository;

import com.deliccio.dao.ProductoPorSucursalDAO;
import com.deliccio.entitys.ProductoPorSucursal;
import com.deliccio.entitys.ProductoPorSucursalPK;

@Repository("ProductoPorSucursalDAO")
public class ProductoPorSucursalDAOImpl implements ProductoPorSucursalDAO{
	
	
	protected EntityManager em;
	private EntityManagerFactory emf;
	
	@PersistenceUnit
	public void setEntityManagerFactory(EntityManagerFactory emf){
		this.emf=emf;
	}
	
	@PersistenceContext
	public void setEm(EntityManager em){
		this.em=em;
	}
	
	
	@Override
	public ProductoPorSucursal obtenerProductosPorSucursal(int idProducto,int idSucursal){
		String query="select new ProductoPorSucursal(ps.id, ps.cantidad) from ProductoPorSucursal ps where  ps.id.idproducto =  :idProducto and  ps.id.idsucursal =  :idSucursal ";
		Query q=em.createQuery(query);
		q.setParameter("idProducto",idProducto);
		q.setParameter("idSucursal",idSucursal);	
		q.setMaxResults(1);
		
		List<ProductoPorSucursal> lst = q.getResultList();
		if (lst!=null) {
			if (lst.size()>0) {
				return lst.get(0);
			}
		}
		
		return null;
	}

	@Override
	public void guardar(ProductoPorSucursal productoPorSucursal){
		EntityManager emReg=emf.createEntityManager();
		try{
			emReg.getTransaction().begin();
			
			if(productoPorSucursal.getId() != null)
				emReg.merge(productoPorSucursal);
			else
				emReg.persist(productoPorSucursal);
			
			emReg.getTransaction().commit();
		}
		catch(Exception e){
			System.err.println("Error:" + e.getMessage());
			e.printStackTrace();
			em.getTransaction().rollback();
		}
		finally{
			if(emReg != null)
				emReg.close();
		}
		
	}

	
	
	
}
